<?php

require_once dirname(__FILE__).'/../lib/facturasGeneratorConfiguration.class.php';
require_once dirname(__FILE__).'/../lib/facturasGeneratorHelper.class.php';
//require_once dirname(__FILE__).'/../../../../../lib/impresion/fpdf.php';
//require('fpdf.php');
/**
 * facturas actions.
 *
 * @package    gescell
 * @subpackage facturas
 * @author     Your name here
 * @version    SVN: $Id: actions.class.php 12474 2008-10-31 10:41:27Z fabien $
 */
class facturasActions extends autoFacturasActions
{
  public function executeEdit(sfWebRequest $request)
  {
    $this->facturas = $this->getRoute()->getObject();
    //$this->form     = $this->configuration->getForm($this->facturas);
    $this->form     = new facturasForm($this->facturas, array('url' => $this->getController()->genUrl('facturas/autocompletado_cliente')));
    $idCliente      = $this->facturas->getClientesId();
    $this->form->modelosxingresos = new modelosxingresos();
    $this->form->modelosxingresos = modelosxingresosPeer::getBuscarDetalles($idCliente);
    $this->form->detallefacturas = facturadetallePeer::getBuscarDetalles($this->facturas->getId());
    $totales        = facturadetallePeer::getTotalesFactura($this->facturas->getId());
    $this->form->facturas = $this->facturas;
    $this->form->setDefault('totalneto', $totales['neto']);
    $this->form->setDefault('exentas', $totales['exentas']);
    $this->form->setDefault('totaliva', $totales['impuestos']);
    $this->form->setDefault('total', $totales['totalgral']);
  }
  public function executeNew(sfWebRequest $request)
  {

    //MOdificado por Marcelo
    //$this->form = $this->configuration->getForm();
    //Hasta haca
    $this->form     = $this->configuration->getForm();
    $this->facturas = $this->form->getObject();
    $C = Propel::getConnection();
    $consulta = 'Select MAX(facturas.numero_de_comprobante) as maximo from facturas';
    $sentencia = $C->prepare($consulta);
    $sentencia->execute();
    $fila = $sentencia->fetch();
    $numero = $fila['maximo'];
    $this->form     = new facturasForm($this->facturas, array('url' => $this->getController()->genUrl('facturas/autocompletado_cliente')));
    $this->form->setDefault('fecha',time( ));
    $this->form->setDefault('numero_de_comprobante',$numero + 1);

  }
 /* public function executeBuscardetalles(){
      
         //SQL para encontrar la lista de Elementos posibles para la facturación
         //Agregar el parametro Cliente_ID para poder encontrar los registros relacionados
         //Solo para Ajax
         if ($this->getRequest()->isXmlHttpRequest()){
             //$modelosxingresosPeer = new modelosxingresosPeer();
             //$form = $this->configuration->getForm();
             $idCliente = $this->getRequest()->getParameter('clientes_id');
            // return $this->renderpartial('detalle_factura_1',array('detallefacturas' => facturadetallePeer::getBuscarDetalles($factura_id)));

             $modelosxingresos = modelosxingresosPeer::getBuscarDetalles($idCliente);
             return $this->renderpartial('buscardetalles_1',array('modelosxingresos' => $modelosxingresos));    
             

        }
  }*/
  
  public function executeAutocompletado_cliente(){
      $this->forward404Unless($this->getRequest()->isXmlHttpRequest());
      $this->getResponse()->setContentType('application/json');
      $clientes = clientesPeer::ResultadosAutoCompletado($this->getrequest()->getParameter('q'), $this->getrequest()->getParameter('limit'));
      return $this->renderText(json_encode($clientes));
  }
  public function executeAgregar_detalles(){
            $this->forward404unless($this->getRequest()->isXmlHttpRequest());
            $factura_id       = $this->getRequest()->getParameter('factura_id');
            $facturas = facturasPeer::retrieveByPK($factura_id);

            if($facturas->getGuardado()){
                $this->getResponse()->setStatusCode(404);
                return $this->rendertext('El Registro ya esta guardado');
            }
            else{
            $idModeloxIngreso = $this->getRequest()->getParameter('modelosxingreso');
            $idCliente        = $this->getRequest()->getparameter('clientes_id');
            $modelosxingresosPeer = new modelosxingresosPeer();
            $detalles_a_facturar = $modelosxingresosPeer->getTrabajosRealizados($idModeloxIngreso);

            foreach($detalles_a_facturar as $det){
              $detallefactura = new facturadetalle();
              $detallefactura->setModelosxingresosId($idModeloxIngreso);
              $detallefactura->setFacturasId($factura_id);
              $detallefactura->setArticuloservicio( $det['trabajo']);
              $detallefactura->setPrecio( $det['precio']);
              $detallefactura->setCantidad($det['cantidad']);
              $detallefactura->setExentas($det['exentas']);
              $detallefactura->setIva( $det['iva']);
              $detallefactura->setIva( $det['iva']);
              //Bloque de Calculo de subtotales y demas
                 $impuesto = ($det['iva'] * $det['precio'] * $det['cantidad'])/100 ;
                 $subtotal = $det['precio'] * $det['cantidad'] + $impuesto;
              //hasta aca
              $detallefactura->setImpuesto($impuesto);
              $detallefactura->setSubtotal($subtotal);
              $detallefactura->save();
          }
          //Desde Aca es para incluir en mi super parcial
          //Esta Parte Voy a Borrar de lo Lindo
          $totales = facturadetallePeer::getTotalesFactura($factura_id);
          $factura = facturasPeer::retrieveByPK($factura_id);
          $factura->setTotalneto($totales['neto']);
          $factura->setExentas( $totales['exentas']);
          $factura->setTotaliva($totales['impuestos']);
          $factura->setTotal($totales['totalgral']);
          $factura->save();
          //Hasta Aca
          $this->form = new facturasForm($factura);
          $this->form->detallefacturas = facturadetallePeer::getBuscarDetalles($factura_id);
          $this->form->modelosxingresos = modelosxingresosPeer::getBuscarDetalles($idCliente);
          return $this->renderpartial('busqueda_detalle_totales',array('form' => $this->form));
          }
  }
  public function executeBorrardetalles(){
      $factura_id          = $this->getRequest()->getparameter('facturas_id');
       $facturas = facturasPeer::retrieveByPK($factura_id);
       if($facturas->getGuardado()){
           $this->getResponse()->setStatusCode(404);
           return $this->rendertext('El Registro ya esta guardado');
       }
       else{
           $modelosxingresos_id  = $this->getRequest()->getParameter('modelosxingresos_id');
           $idCliente            = $this->getRequest()->getParameter('clientes_id');
           if (facturadetallePeer::BorrarDetalles($factura_id, $modelosxingresos_id)){
              //return $this->renderPartial('detalle_factura_1',array());
              //Desde Aca es para incluir en mi super parcial
              //Voy a borrar de lo Lindo desde Aca
              $totales = facturadetallePeer::getTotalesFactura($factura_id);
              $factura = facturasPeer::retrieveByPK($factura_id);
              $factura->setTotalneto($totales['neto']);
              $factura->setExentas( $totales['exentas']);
              $factura->setTotaliva($totales['impuestos']);
              $factura->setTotal($totales['totalgral']);
              $factura->save();
              //hasta aca
              $this->form = new facturasForm($factura);
              $this->form->detallefacturas = facturadetallePeer::getBuscarDetalles($factura_id);
              $this->form->modelosxingresos = modelosxingresosPeer::getBuscarDetalles($idCliente);
              return $this->renderpartial('busqueda_detalle_totales',array('form' => $this->form));
          }
          else{
                  return $this->rendertext('No Borrado');
          }
       }
  }
  public function executeListImprimir(){

     $this->facturas = $this->getRoute()->getObject();
     $facturas_id = $this->facturas->getId();

                //Desde Aca voy a comentar y le voy a meter mi generador de Cabecera de Reportes
               /* $pdf=new FPDF();
		$pdf->Open();

		$pdf->Header();
                $pdf->AddPage();

		//Set fonts y colores
		$pdf->SetFont('Arial','B',12);
		$pdf->SetFillColor(0,0,102);
		$pdf->SetTextColor(0,0,102);
                $criteria = new criteria();
                $criteria->add(empresaPeer::ACTIVO,true);
                $empresa = empresaPeer::doSelectOne($criteria);

		$pdf->Cell(180,10,$empresa->getNombreEmpresa(),0,1,'C',0);
                $pdf->SetFont('Arial','B',8);
		$pdf->Cell(60,10,utf8_decode('Dirección: '.$empresa->getDireccion()),0,0,'C',0);
		$pdf->Cell(60,10,'Telefono: '.$empresa->getTelefono(),0,0,'C',0);
		$pdf->Cell(60,10,'E-mail: '.$empresa->getCorreoEmpresa(),0,1,'C',0);
                
                * //HAsta Aca
                */
                $pdf = informes::CrearReporte('Factura');
		

		$pdf->SetTextColor(255);
	        $pdf->SetFillColor(120,120,120);
		$pdf->SetLineWidth(.1);
		$pdf->SetFont('Arial','B',8);
                //La cabecera
                $criteria = new Criteria();
                $facturas = new facturas();
                $criteria->add(facturasPeer::ID,$facturas_id);
                $facturas = facturasPeer::doSelectOne($criteria);
                //El detalle del Cliente
                $criteria2 = New Criteria();
                $criteria2->add(clientesPeer::ID,$this->facturas->getclientesid());
                $clientes = clientesPeer::doSelectOne($criteria2);
                //El Detalles de la factura
                $detallefacturas = new facturadetalle();
                $criteria3 = new Criteria();
                $criteria3->add(facturadetallePeer::FACTURAS_ID, $facturas_id);
                $detallefactura = facturadetallePeer::doSelect($criteria3);



                if (!$facturas->getCredito()){
                    $forma_pago = 'CONTADO';
                }
                else{
                    $forma_pago = 'CREDITO';
                }
                if(!$clientes->getCiudad() && !$clientes->getDireccion()){
                    $Direccion = 'Sin Dato';
                }
                else{
                    $Direccion = $clientes->getCiudad().', '.$clientes->getDireccion();
                }
                
                $pdf->SetFont('Arial','B',8);
		$pdf->SetFillColor(255,255,255);
		$pdf->SetTextColor(0);
                //$nro = $facturas->getId();
                //$pdf->Cell(162,4,'ID: '.$nro,0,1,'R',1);

                 
                //Fila 1
                $pdf->Cell(85,4,'Datos del Cliente',0,0,'L',1);
                $pdf->Cell(75,4,'Datos de la Factura',0,1,'L',1);
               
                $pdf->SetFont('Arial','',7);
		$pdf->SetFillColor(255,255,255);
		$pdf->SetTextColor(0);

                $cliente= $clientes->getNombre().'; '.$clientes->getApellido();
                $pdf->Cell(85,4,'Cliente: '.utf8_decode($cliente),0,0,'L',1);
                $nro_compro= $facturas->getNumeroDeComprobante();
                $pdf->Cell(75,4,'Numero de Comprobante: '.$nro_compro,0,1,'L',1);
                $pdf->Cell(85,4,'R.U.C: '.$clientes->getRuc() ,0,0,'L',1);
		$pdf->Cell(75, 4,'Forma de Pago: '.$forma_pago, 0, 1, 'L', 1);
                $direc = utf8_decode('Dirección: '.$Direccion);
                $pdf->Cell(85,4,$direc,0,0,'L',1);
                $fecha= $facturas->getFecha('d-m-y');
                $pdf->Cell(75,4,'Fecha: '.$fecha,0,1,'L',1);
		//$pdf->Cell($w, $h, $txt, $border, $ln, $align, $fill)
                //Datos del Cliente
                
                

 	        //Creacion de los Encabezados para los detalles
                $pdf->SetTextColor(3);
	        $pdf->SetFillColor(125,125,125);
		$pdf->SetLineWidth(.1);
		$pdf->SetFont('Arial','B',8);

		$pdf->Cell(180,2,'',0,1,'C',0);
		$pdf->SetFillColor(120,120,120);
		$pdf->SetFont('Arial','B',6);
	        $pdf->Cell(8,5,'ITEM',1,0,'C',1);
		$pdf->SetFont('Arial','B',8);
	        $pdf->Cell(50,5,'DESCRIPCION',1,0,'C',1);
		$pdf->SetFont('Arial','B',6);
		$pdf->Cell(25,5,'PRECIO UNITARIO',1,0,'C',1);
		$pdf->Cell(12,5,'CANTIDAD',1,0,'C',1);
		//Exentas se achico 5
                $pdf->Cell(20,5,'EXENTAS',1,0,'C',1);
                $pdf->Cell(10,5,'I.V.A 5',1,0,'C',1);
                $pdf->Cell(10,5,'I.V.A 10',1,0,'C',1);
		//Impuesto se Achico 5
                $pdf->Cell(20,5,'IMPUESTO',1,0,'C',1);
		$pdf->Cell(25,5,'SUB TOTAL',1,1,'C',1);
		$pdf->SetFillColor(255,255,255);
		$pdf->SetFont('Arial','B',8);

		
                  $e=1;$precio = 0; $totaliva =0;
		  foreach ($detallefactura as $detalle)
		  {
			$pdf->Cell(8,5,$e++,1,0,'C',1);
			$descrip = $detalle->getArticuloservicio() ;
                        $pdf->Cell(50,5,utf8_decode($descrip),1,0,'L',1);
			//$precio += $detalle['precio']*$detalle['cantidad'];
			$precio = $detalle->getPrecio();
                        $pdf->Cell(25,5,$precio,1,0,'R',1);
			$canti = $detalle->getcantidad();
                        $pdf->Cell(12,5,$canti,1,0,'C',1);
                        //Le saque 5 a exentas
                        $pdf->Cell(20,5,$detalle->getExentas(),1,0,'C',1);
                        switch ($detalle->getIva()){
                            case 0 :
                                $iva5 = 0; $iva10=0;break;
                            case 5:
                                $iva5 = 5; $iva10=0;break;
                            case 10:
                                $iva5 = 0; $iva10=10;break;
                        }
                        //Agregado para Discriminar los Ivas
                        
                        $totaliva += ($precio*$canti*($iva/100));
                        $pdf->Cell(10,5,$iva5,1,0,'C',1);
                        $pdf->Cell(10,5,$iva10,1,0,'C',1);
			$impuesto = $detalle->getImpuesto();
                        //Le saque 5 a impuesto
                        $pdf->Cell(20,5,$impuesto,1,0,'R',1);
			$subtotal = $detalle->getSubtotal();
                        $pdf->Cell(25,5,$subtotal,1,1,'R',1);

	          }
		  /*convercion en letras*/
	       /*
               $tt = $total;
               $tt = $tt+0.009;
               $Numero = intval($tt);
               $Decimales = $tt - Intval($tt);
               $Decimales= $Decimales*100;
               $Decimales= Intval($Decimales);
               $x=$this->NumerosaletrasFacturas($Numero);
               $y=$this->NumerosaletrasFacturas($Decimales);
               $v=($x).($y).('guaranies');
		  /*convercion en letras*/

		$pdf->Cell(180,2,'',0,1,'C',0);
		$pdf->SetFillColor(120,120,120);
                $pdf->SetFillColor(255,255,255);
		$pdf->Cell(180,10,'TOTALES DE LA FACTURA',0,1,'R',1);
                $pdf->SetLineWidth(.1);

		$pdf->Cell(155,5,'TOTAL A NETO:',0,0,'R',1);
		$pdf->Cell(25,5,$facturas->getTotalneto().'.Gs',0,1,'R',1);

                $pdf->Cell(155,5,'TOTAL A EXENTAS:',0,0,'R',1);
		$pdf->Cell(25,5,$facturas->getExentas().'.Gs',0,1,'R',1);

                $pdf->Cell(155,5,'TOTAL I.V.A:',0,0,'R',1);
                $pdf->Cell(25,5,$facturas->getTotaliva().'.Gs',0,1,'R',1);
		$pdf->Cell(155,5,'TOTAL A PAGAR:',0,0,'R',0);
		$pdf->Cell(25,5,$facturas->getTotal().'.Gs',0,1,'R',0);
                $pdf->SetFont('Arial','B',8);
		$pdf->SetFillColor(0,0,102);
		$pdf->SetTextColor(0,0,102);
                $pdf->Cell(180,10,utf8_decode('Fecha de impresión: ').Date('d/m/y', time()),0,1,'R',0);
		$pdf->Output('factura_nro_'.$facturas->getNumeroDeComprobante().'.pdf','D');
	        return sfView::NONE;



  }
  //public function executeUpdate(sfWebRequest $request){
  //    parent::executeUpdate($request);
  //    $this->forward('facturasxtiposvalores','new');
  //}
  public function executeCabecera(sfWebRequest $request)
  {
    $this->facturas = $this->getRoute()->getObject();
    $this->form     = new facturasForm($this->facturas, array('url' => $this->getController()->genUrl('facturas/autocompletado_cliente')));
  }
  public function executeCreate(sfWebRequest $request){
     $facturas = $request->getParameter('facturas');
     if (!facturasPeer::BuscarNumeroFactura($facturas['numero_de_comprobante']))
     {
         parent::executeCreate($request);
     }
     else
     {
      $this->getUser()->setFlash('error', 'El elemento no se Guardo debido a que el Numero de Comprobante es Repetido.', false);
      $this->form = $this->configuration->getForm();
      $this->facturas = $this->form->getObject();
      $this->form     = new facturasForm($this->facturas, array('url' => $this->getController()->genUrl('facturas/autocompletado_cliente')));
      $this->form->setDefault('fecha',time());
      $this->setTemplate('new');
     }
  }
  //Proces form by Marcelo
  protected function processForm(sfWebRequest $request, sfForm $form)  {
    $form->bind($request->getParameter($form->getName()), $request->getFiles($form->getName()));
    if ($form->isValid()){
      $objeto = $form->getObject();
      if ($objeto->isNew())
        $facturas = $form->save();
      else{
         $facturas = facturasPeer::retrieveByPK($objeto->getId());
         if ($facturas->getAnulado())
             $this->redirect('facturas/mensaje?mensaje=La factura esta anulada no se pueden realizar cambios');
         if ($facturas->getPagado())
             $this->redirect('facturas/mensaje?mensaje=La factura ya esta Pagada no se pueden realizar cambios');

         //if (!$objeto->getTotal())
         //    $this->redirect('facturas/mensaje_2?mensaje=La factura no tiene detalles, desea Elminarla?&id='.$objeto->getId());

      }
      $parametro = null;
      $this->dispatcher->notify(new sfEvent($this, 'admin.save_object', array('object' => $facturas)));
      if ($request->hasParameter('anular')){
           $parametro = 'anular';
           $mensaje = 'No se puede anular debido a que existen Pagos Relacionados';
           $tipo = 'error';
      }
      if ($request->hasParameter('pago_credito'))
          $parametro = 'pago_credito';
      if ($request->hasParameter('pago_contado'))
          $parametro = 'pago_contado';
      if (!$parametro){
          $this->getUser()->setFlash('notice','Puede Agregar detalles a Esta Factura', false);
          $this->redirect(array('sf_route' => 'facturas_edit', 'sf_subject' => $facturas));
      }
      if (!$facturas->getTotalPagado()){
              switch ($parametro) {
                  case 'pago_credito': $facturas->setCredito(true);break;
                  case 'pago_contado': $facturas->setCredito(false);break;
                  case 'anular':
                        $facturas->setAnulado(true);$facturas->setGuardado(true);$facturas->save();
                        $mensaje='Se Anulo Correctamente la Factura';
                        $tipo = 'notice';
                        $this->getUser()->setFlash($tipo,$mensaje);
                        $this->redirect(array('sf_route' => 'facturas_edit', 'sf_subject' => $facturas));
                    //$this->redirect('facturas/edit?id='.$facturas->getId());
                  break;
                  //default :break;
              }
      }
      $facturas->setGuardado(true);$facturas->save();
      if($facturas->getCredito())
          $this->forward('facturas','recibos');
      else
          $this->redirect('facturasxtiposvalores/new?id='.$facturas->getId());
      }
    else{
      $this->getUser()->setFlash('error', 'No se pudo guardar debido a algunos errores.');
      $this->forward('facturas','edit');
    }
  }
  //Fin
  public function executeListPago(sfWebRequest $request){
      $facturas = new facturas();
      $facturas = facturasPeer::retrieveByPK($request->getParameter('id'));
      if($facturas->getAnulado())
         $this->redirect('facturas/mensaje?mensaje=La factura esta anulada no se pueden realizar pagos');
      //if(($facturas->getTotal() == $facturas->getTotalPagado())){
      //   $facturas->setPagado(true);$facturas->save();$this->redirect('facturas/mensaje');
      //}
      if($facturas->getPagado())
              $this->redirect('facturas/mensaje');
      else{
         $facturas->setGuardado(true);  $facturas->save();
         if (!$facturas->getCredito())
             $this->redirect('facturasxtiposvalores/new?id='.$facturas->getId());
         else
            $this->forward('facturas','recibos');
      }
  }
  public function executeMensaje() {
      if ($this->getRequest()->hasParameter('mensaje')){
          $this->mensaje = $this->getRequest()->getParameter('mensaje');
      }
      else{
          $this->mensaje = 'La factura esta Pagada, seras redirigido a la lista de Facturas';
      }

  }
  public function executeMensaje_2() {
      if ($this->getRequest()->hasParameter('mensaje')){
          $this->id = $this->getRequest()->getParameter('id');
          $this->mensaje = $this->getRequest()->getParameter('mensaje');
      }
                
  }
  public function executeListDetpagos(){
      $facturas_id = $this->getRequest()->getParameter('id');
      $this->facturas = facturasPeer::retrieveByPK($facturas_id);
      if ($this->facturas->getCredito())
          $this->detalles = $this->facturas->getReciboss();
      else
          $this->detalles = facturasPeer::getListaDePagos($facturas_id, $this->facturas->getCredito());
  }
  public function executeBorrar_pago(){
      $id = $this->getRequest()->getParameter('id');
      $credito = $this->getRequest()->getParameter('iscredit');
      if ($credito){
          $recibosportipovalores = recibosportipovalorPeer::retrieveByPK($id);
          $recibos = recibosPeer::retrieveByPK($recibosportipovalores->getRecibosId());
          if($recibosportipovalores->EsBorrable()){
              $facturas = facturasPeer::retrieveByPK($recibos->getFacturasId());
              $recibosportipovalores->delete();
              $facturas->save();
              $this->getUser()->setFlash('notice', 'El Pago se borro de la base de datos.');
              $this->redirect('facturas/listDetpagos?id='.$recibos->getFacturasId());
          }
          else{
              $this->redirect('facturas/mensaje?mensaje=Lo sentimos pero la caja esta cerrada y ya no es posible modificar los datos');
          }
      }
      else{
         $facturasxtiposvalores = facturasxtiposvaloresPeer::retrieveByPK($id);
         if($facturasxtiposvalores->EsBorrable()){
             if($facturasxtiposvalores){
                 $facturas = facturasPeer::retrieveByPK($facturasxtiposvalores->getFacturasId());
                 $facturasxtiposvalores->delete();
                 $facturas->save();
                 $this->getUser()->setFlash('notice', 'El Pago se borro de la base de datos.');
                 $this->redirect('facturas/listDetpagos?id='.$facturasxtiposvalores->getFacturasId());
             }
         }
         else
             $this->redirect('facturas/mensaje?mensaje=Lo sentimos pero la caja esta cerrada y ya no es posible modificar los datos');
      }
  }
  public function executeEditarcabecera(sfWebRequest $request){
         //$this->forward404Unless($request->isMethod('post'));
         
        $cambios =  $request->getParameter('facturas');$facturas = new facturas();
        $facturas = facturasPeer::retrieveByPK($cambios['id']);
        if(!facturasPeer::BuscarNumeroFactura($cambios['numero_de_comprobante'],$cambios['id'])){
            if ($facturas){
                $facturas->setClientesid($cambios['clientes_id']);
                $facturas->setNumeroDeComprobante($cambios['numero_de_comprobante']);
                if(isset($cambios['credito'])){$facturas->setcredito($cambios['credito']);}
                else{$facturas->setcredito(false);}
                if(isset($cambios['pagado'])){$facturas->setpagado($cambios['pagado']);}
                else{$facturas->setpagado(false);}
                if(isset($cambios['guardado'])){$facturas->setguardado($cambios['guardado']);}
                else{$facturas->setguardado(false);}
                if(isset($cambios['anulado'])){$facturas->setanulado($cambios['anulado']);}
                else{$facturas->setanulado(false);}
                $facturas->setfecha(mktime(0, 0, 0, $cambios['fecha']['month'],$cambios['fecha']['day'] , $cambios['fecha']['year']));
                $cambios['fecha'];
                $facturas->save();
                $this->getUser()->setFlash('notice', 'La modificación se realizo con exito.');
                $this->redirect('facturas/edit?id='.$cambios['id']);
            }
        }
        else{
           $this->getUser()->setFlash('error', 'La modificación no se realizo por que ya existe el Numero de Comprobante.');
           $this->redirect('facturas/cabecera?id='.$cambios['id']);
        } 
  }
  public function executeRecibos(){
      //Este metodo realiza lo siguiente
      //redirecciona a recibos new y le pasa el parametro del id de la factura para la que se generara el recibo
      //$numero_recibo = recibosPeer::doCount($criteria) + 1;
      $facturaid = $this->GetRequest()->getParameter('id');
      $facturas = facturasPeer::retrieveByPK($facturaid);
      $criteria = new Criteria;
      $criteria->add(recibosPeer::FACTURAS_ID,$facturaid);
      $criteria->addDescendingOrderByColumn(recibosPeer::NUMEROPAGO);
      $recibos = recibosPeer::doSelectOne($criteria);
      if($recibos){
          if ($recibos->getMonto())
               $numero_recibo = $recibos->getNumeropago()+1;
          else
              $this->redirect('recibos/new?recibo_id='.$recibos->getId());
      }
      else
          $numero_recibo = 1;
      $recibos = new recibos();
      $recibos->setClientesId($facturas->getClientesId());
      $recibos->setFacturasId($facturas->getId());
      $recibos->setNumerocomprovante($facturas->getNumeroDeComprobante());
      $recibos->setNumeropago($numero_recibo);
      $recibos->setfecha(time());
      $recibos->save();
      $this->redirect('recibos/new?recibo_id='.$recibos->getId());

  }

}
